
        <html>
			<head>
			     <title>CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/papers/16825">http://drops.wooyun.org/papers/16825</a></h1>
				
      <p>
        <p><strong>Author：360天眼实验室</strong></p>

<h1>0x00 引子</h1>

<hr />

<p>人在做，天在看。</p>

<p>近期360天眼实验室捕获到一例针对印度的定向攻击样本，样本利用了沙虫漏洞的补丁绕过漏洞CVE-2014-6352，经分析确认后我们认为这是趋势科技在今年三月份发布的名为“Operation C-Major”APT攻击活动的新样本。关于C-Major行动的相关内容，有兴趣的读者可以在文后的参考链接中查看。</p>

<p>本文主要对CVE-2014-6352漏洞做基本的分析并剖析一个现实中利用此漏洞执行定向攻击的案例。</p>

<h1>0x01 漏洞分析</h1>

<hr />

<p>样本利用的漏洞为CVE-2014-6352，该漏洞是CVE-2014-4114的补丁绕过（MS14-060）问题,在管理员模式或者关闭UAC的情况下可以实现不弹出警告窗运行嵌入的恶意程序。与CVE-2014-4114的利用样本相比，CVE-2014-6352样本的特点是没有嵌入inf，只有一个嵌入PE的OLE对象。从攻击者的角度看，这类样本可以说有利有弊。在管理员模式下，可以无警告窗执行PE文件，绕开MS14-060的补丁。但是如果不是在管理员模式下，就算受害者没有安装MS14-060的补丁，也会弹窗提示是否要执行嵌入的EXE文件。</p>

<!--more-->

<p>我们知道CVE-2014-4114漏洞的成因在于packager.dll的<code>CPackage::Load</code>方法加载对应的OLE复合文档对象时，对不同类型的复合文档有不同的处理流程，其中对某些复合文档嵌入的不可信来源文件没有经过处理，从而使得攻击者可以通过伪造OLE复合文档的CLSID来达到执行特定文件的效果：</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503013617644149.png" alt="" /></p>

<p><code>packager!Cpackage:: Load</code>方法中处理不同类型复合文档的分支</p>

<p>在MS14-060这个补丁中，微软通过添加<code>MarkFileUnsafe</code>函数来弥补这个漏洞：</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503013845829225.png" alt="" /></p>

<p>ms14-060补丁中的<code>packager!Cpackage:: EmbedReadFromStream</code>方法</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503014397913325.png" alt="" /></p>

<p>未安装ms14-060<code>的packager!Cpackage:: EmbedReadFromStream</code>方法</p>

<p><code>MarkFileUnsafe()</code>通过调用<code>IZoneIdentifier::SetId</code>来设置文件的Security Zone，传入的参数3对应的是设置URLZONE_INTERNET，从而标明此文件来自于其他计算机，运行时会弹出警告窗口：</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503014547064420.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503014736713512.png" alt="" /></p>

<p>然而漏洞并不仅仅只是未对不可信来源的文件处理，攻击者还可以通过伪造OLE复合文档的CLSID和XML中的OLE Verb来改变执行流程。问题还在于对一个exe文件来说，即使被标记了URLZONE_INTERNET之后，右键点击以管理员权限运行时，将不会再弹窗提示该文件来自于其他计算机，而是以UAC的提示窗弹出：</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503014999904610.png" alt="" /></p>

<p>所以只需要构造特定的CLSID和OLE Verb，使执行流程来到右键界面的第二项管理员权限运行EXE程序，那么在关闭UAC或者管理员权限的情况下，就能绕过MS14-060补丁施加的限制。下面我们结合这次从外面捕获到的样本来展示一下整个漏洞利用的过程。</p>

<h1>0x02 样本分析</h1>

<hr />

<p>首先我们拿到了一个名为vedio.ppsx的PPT文件，MD5为b6a1ee16de885c70682a7a8e4c1b556c ，从VirusTotal的上传来源看为来自印度。对这个ppsx解压处理，可以看到其内嵌了一个OLE对象，嵌入的是一个PE文件：</p>

<p><img src="http://static.wooyun.org//drops/20160615/201606150301503780979.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503015258644810.png" alt="" /></p>

<p>在<code>video.ppsx\ppt\slides\slide1.xml</code>中，指定了嵌入的对象id = rId3</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503015320431910.png" alt="" /></p>

<p>在<code>video.ppsx \ppt\slides\_rels\ slide1.xml.rels</code>中指定了rId3对应的是前面提到的oleObject1.bin</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503015552524109.png" alt="" /></p>

<p>复合文档对应的CLSID 如下图，是<code>{0003000c-0000-0000-c000-000000000046}</code>，对应的是CLSID_OldPackage，那么根据上面的分析，<code>CPackage::Load</code>调用<code>CPackage::PackageReadFromStream</code>进一步处理，<code>PackageReadFromStream</code>会通过<code>CPackage::EmbedReadFromStream</code>在临时目录释放嵌入的PE文件。</p>

<p><img src="http://static.wooyun.org//drops/20160615/20160615030157956911114.png" alt="" /></p>

<p><code>packager!CPackage::EmbedReadFromStream</code>中调用了 <code>packager!CopyStreamToFile</code>这个函数，将嵌入的PE释放到temp目录下的putty.exe，并通过MarkFileUnsafe设置文件标记：</p>

<p><img src="http://static.wooyun.org//drops/20160615/20160615030159816191212.png" alt="" /></p>

<p>然后，通过<code>CPackage::DoVerb</code>方法来响应终端用户的动作，在 <code>CPackage::DoVerb</code>中，会先对第二个参数进行判断，这个参数在<code>video.ppsx\ppt\slides\slide1.xml</code>中指定：</p>

<p><img src="http://static.wooyun.org//drops/20160615/20160615030201191211311.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160615/20160615030202473971410.png" alt="" /></p>

<p>样本中构造的参数是3，所以进入使用popup菜单命令执行操作的流程：</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503020463924159.png" alt="" /></p>

<p>调用<code>GetMenuItemInfo</code>时，第二个参数uItem代表菜单的位置，这里参数为1，也就是右键菜单的第二项，对于exe文件，右键菜单的第二项是“以管理员权限运行”</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503020615896167.png" alt="" /></p>

<p>最终调用了<code>SHELL32!CDefFolderMenu::InvokeCommand</code>方法，这时就会以试图管理员权限运行putty.exe，在关闭了UAC或者管理员模式下，就绕过了MS14-060的保护静默地执行了一个PE文件。</p>

<h1>0x03 所释放程序的分析</h1>

<hr />

<h2>putty.exe</h2>

<p>ppt文件释放出来的putty.exe实际上是一个改名后的经过混淆的.NET 程序，MD5为 78fab9978ae4de4f684908f47fdc2333 ，这个程序其实是一个Dropper。</p>

<p>经过去混淆后，我们可以清楚地看到其程序代码，首先遍历是否有杀软进程：</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503020752573177.png" alt="" /></p>

<p>样本在这里其实不是一次遍历查找，而是分成多次遍历穿插在功能代码中，每次查找一到两款杀软的进程，查找的杀软进程如下：</p>

<p>ekrn.exe（ESET）</p>

<p>guardxkickoff.exe（IKARUS）</p>

<p>AvastSvc.exe</p>

<p>btagent.exe</p>

<p>bdagent.exe（BitDefender）</p>

<p>avgui.exe。</p>

<p>然后从资源中读取数据，并解密为一个PE文件</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503020977383187.png" alt="" /></p>

<p>启动cmd进程，将自身拷贝成<code>%temp%\net\health.exe</code>并添加注册表启动项</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503021069702196.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503021223082205.png" alt="" /></p>

<p><strong>HKEY&#95;CURRENT&#95;USER/Software/Microsoft/Windows NT/CurrentVersion/Windows - load</strong>这个值可以指定在用户登录后自动运行的程序文件名。</p>

<p>然后将RegAsm.exe拷贝为<code>%temp%\svhost.exe</code></p>

<p><img src="http://static.wooyun.org//drops/20160615/20160615030213601092111.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503021587210226.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503021642373234.png" alt="" /></p>

<p>接着以Suspend方式启动svhost.exe，将之前解密出来的PE注入，并恢复线程。</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503021899592245.png" alt="" /></p>

<p>最后在<code>%temp%/net/</code>目录下写入health.exe.bat文件并执行</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503021972408255.png" alt="" /></p>

<p>health.exe.bat的代码如下，作用是不断遍历进程查看svhost.exe是否启动，没有启动的话则将其启动。</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503022179909265.png" alt="" /></p>

<h2>svhost.exe</h2>

<p>在HKEY&#95;CURRENT&#95;USER中设置一个值di用于判断是否已经感染过该系统：</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503022229276275.png" alt="" /></p>

<p>设置HKEY&#95;CURRENT&#95;USER\Environment\SEE&#95;MASK&#95;NOZONECHECKS的值为1，这是用于关闭附件管理器检查的：</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503022448952285.png" alt="" /></p>

<p>然后用命令行启动netsh.exe，添加防火墙规则，允许其通过防火墙</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503022582642294.png" alt="" /></p>

<p>命令行如下</p>

<pre><code>#!shell
netsh firewall add allowedprogram "C:\Users\***\AppData\Local\Temp\svhost.exe" " svhost.exe" ENABLE
</code></pre>

<p>申请一片内存空间用于存放接收/发送的数据，开始网络连接：</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503022770321304.png" alt="" /></p>

<p>C&amp;C地址： <a href="https://www.virusbook.cn/ip/191.101.23.190">191.101.23.190</a></p>

<p><img src="http://static.wooyun.org//drops/20160615/20160615030228947193111.png" alt="" /></p>

<p>端口号： 5552</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503022938127326.png" alt="" /></p>

<p>收集受害者的系统信息，包括上线时间、系统版本、系统位数、磁盘信息、当前用户等等，并发送出去：</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503023168072334.png" alt="" /></p>

<p>然后开启一个线程循环查询socket是否可读（接收命令）：</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503023234212344.png" alt="" /></p>

<p>读取命令后，开启新线程根据指令执行对应的操作：</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503023433625353.png" alt="" /></p>

<p>开启键盘记录线程，并将记录信息保存在注册表HKEY&#95;CURRENT&#95;USER\SoftWare\ ce99f8fa1676b15364293a0db3d6a707中：</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503023652215363.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503023722677373.png" alt="" /></p>

<p>设置自启动项：</p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503023975685383.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160615/2016061503024020604393.png" alt="" /></p>

<p>接收命令后，对命令做出相应的处理，在switch中根据命令执行对应的功能，这里就不再详细分析，下面给出部分功能与对应的命令，如下：</p>

<ul>
<li><code>rn</code> 下载/执行文件</li>
<li><code>CAP</code> 屏幕监控</li>
<li><code>un</code> 自删除、启动和终止进程</li>
<li><code>up</code> 在线更新</li>
<li><code>Ex</code> 加载插件</li>
<li><code>GTV</code> 获取注册表HKEY&#95;CURRENT&#95;USER\SoftWare\ ce99f8fa1676b15364293a0db3d6a707中的键盘记录信息</li>
<li><code>STV</code> 设置注册表HKEY&#95;CURRENT&#95;USER\SoftWare\ ce99f8fa1676b15364293a0db3d6a707开始键盘记录</li>
<li>…</li>
</ul>

<h1>0x04 IOC</h1>

<hr />

<table>
<thead>
<tr>
  <th>类型</th>
  <th>值</th>
</tr>
</thead>
<tbody>
<tr>
  <td>C&amp;C</td>
  <td><a href="https://www.virusbook.cn/ip/191.101.23.190">191.101.23.190:5552</a></td>
</tr>
<tr>
  <td>Downloader URL</td>
  <td><a href="https://www.virusbook.cn/domain/pcdopune.com">http://pcdopune.com/ad/video.ppsx</a></td>
</tr>
</tbody>
</table>

<h1>0x05 总结</h1>

<hr />

<p>在网上公开的IOC平台中发现，该C&amp;C地址与趋势科技在今年三月份发布的“Operation C-Major”报告中的一个C&amp;C完全一致。另外，样本下载的域名pcdopune.com关联到的其他样本中，也出现了与报告中几乎一样的恶意宏样本，由此我们认为这是与C-Major相关的攻击行动。</p>

<p>根据360威胁情报中心的数据，我们发现本文所涉及的样本仅仅只是C-Major行动中使用的多种Dropper中的一种类型，CVE-2010-3333、CVE-2012-0158等漏洞也被利用来做恶意代码的植入，不仅如此，甚至还利用了宏和脚本，所使用的PE样本更是灵活多变。从这些迹象来看C-Major行动背后团伙非常积极地利用所能得到各种植入手段，极有可能是专业的有背景及一定技术能力的组织。</p>

<h2>参考链接</h2>

<ul>
<li><a href="http://documents.trendmicro.com/assets/pdf/Indian-military-personnel-targeted-by-information-theft-campaign-cmajor.pdf">http://documents.trendmicro.com/assets/pdf/Indian-military-personnel-targeted-by-information-theft-campaign-cmajor.pdf</a></li>
<li><a href="http://www.cnblogs.com/Danny-Wei/p/4161539.html">http://www.cnblogs.com/Danny-Wei/p/4161539.html</a></li>
<li><a href="http://www.openoffice.org/sc/compdocfileformat.pdf">http://www.openoffice.org/sc/compdocfileformat.pdf</a></li>
</ul>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          